var express = require('express');
var router = express.Router();
var Users = require('../datas/users.js');

/* GET users listing. */
router.get('/', function(req, res, next) {
  res.send('respond with a resource');
});

/* POST 用户注册 */
router.post('/register', async function(req, res, next) {
  try {
    const { username, password, phone, image } = req.body;

    // 验证必填字段
    if (!username || !password || !phone) {
      return res.status(400).json({
        success: false,
        message: '用户名、密码和手机号都是必填项'
      });
    }

    // 检查用户名是否已存在
    const existingUser = await Users.findOne({ username: username });
    if (existingUser) {
      return res.status(409).json({
        success: false,
        message: '用户名已存在'
      });
    }

    // 检查手机号是否已存在
    const existingPhone = await Users.findOne({ phone: phone });
    if (existingPhone) {
      return res.status(409).json({
        success: false,
        message: '手机号已被注册'
      });
    }

    // 处理头像base64转换为二进制
    let imageBuffer = null;
    if (image && typeof image === 'string') {
      try {
        if (image.startsWith('data:image/')) {
          // 移除data:image/...;base64,前缀，只保留base64数据
          const base64Data = image.replace(/^data:image\/[a-z]+;base64,/, '');
          // 转换为Buffer（二进制）
          imageBuffer = Buffer.from(base64Data, 'base64');
          console.log('头像转换成功，大小:', imageBuffer.length, 'bytes');
        } else {
          // 如果是纯base64数据
          imageBuffer = Buffer.from(image, 'base64');
          console.log('Base64头像转换成功，大小:', imageBuffer.length, 'bytes');
        }
      } catch (error) {
        console.error('头像转换错误:', error);
        // 如果转换失败，继续注册但不保存头像
      }
    }

    // 创建新用户
    const newUser = new Users({
      image: imageBuffer, // 存储为二进制数据
      username: username,
      password: password, // 注意：实际项目中应该对密码进行加密
      phone: phone,
      createdAt: new Date(),
      updatedAt: new Date()
    });

    // 保存到数据库
    const savedUser = await newUser.save();

    // 返回成功响应（不返回密码）
    res.status(201).json({
      success: true,
      message: '注册成功',
      data: {
        id: savedUser._id,
        username: savedUser.username,
        phone: savedUser.phone,
        hasImage: !!savedUser.image,
        createdAt: savedUser.createdAt
      }
    });

  } catch (error) {
    console.error('注册失败:', error);
    res.status(500).json({
      success: false,
      message: '服务器错误，注册失败',
      error: error.message
    });
  }
});

module.exports = router;
